package com.project.service;

import com.github.pagehelper.PageInfo;
import com.project.bean.BuyBean;
import com.project.bean.BuyCarBean;
import com.project.bean.BuyInfoBean;
import com.project.bean.ProductBean;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 采购业务接口
 */
public interface IBuyService {
    public int PAGESIZE=3;

    /**
     * 在购物车中添加采购商品信息，如果商品在库存中不存在，在库存中新增商品信息,
     * 如果商品在库存中存在，不在库存添加商品信息
     * @param method 判断条件，如果为“add”则添加商品到库存和购物车，为“notadd”则只添加到购物车
     * @param product 商品对象
     * @param shopMap 购物车集合
     * @param number 购买数量
     */
    public void add(String method, ProductBean product, Map<Integer, BuyCarBean> shopMap, int number);

    /**
     * 按商品id从购物车中移除商品
     * @param shopMap 购物车
     * @param productId 商品id
     */
    public void del(Map<Integer, BuyCarBean> shopMap, int productId);

    /**
     * 结账，更新商品库存，级联添加订单信息和订单明细信息并清空购物车
     * @param shopMap 购物车
     * @param buy 订单对象
     */
    public void sureBuy(Map<Integer, BuyCarBean> shopMap, BuyBean buy);

    /**
     * 动态条件分页查询采购订单信息
     * @param pageNO 页码
     * @param supName 供应商名称
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return PageInfo<BuyBean> 分页对象
     */
    public PageInfo<BuyBean> cutByItem(int pageNO, String supName, LocalDate startDate, LocalDate endDate);

    /**
     * 按id查询采购订单信息，并查询订单明细
     * @param id 订单id
     * @return 订单对象
     */
    public BuyBean findById(int id);




}
